Historically, users of information technology (IT) management solutions have been divided into two separate categories: software developers and network/system administrators. This was largely the result of relatively static computer hardware infrastructure dedicated to executing particular software applications. In these environments, software developers focused primarily on developing application functionality. Administration of hardware infrastructure on which applications were deployed was delegated to network/system administrators.
The software industry has, in response, developed a number of management solutions to meet the needs of these two types of users, including Application Performance Management (APM) solutions for software developers and Network Performance Management (NPM) solutions for network/system administrators.
Generally, APM solutions focus on providing metrics that measure the quality of service that users of an application experience when using the application. For example, existing APM solutions provide metrics that measure response time of transactions of interest. Unfortunately, many existing APM solutions require bytecode instrumentation of the application to provide metrics. While bytecode instrumentation can be effective in identifying issues with the application software itself, bytecode instrumentation often provides only indirect visibility into the computing infrastructure that supports the application. Such supporting computing infrastructure includes, for example, CPU, memory, network, and data storage resources underlying the execution of the application software. In addition, a given bytecode instrumentation technique often works only with specific a programming language. For example, a particular bytecode instrumentation technique may be available for application components programmed in the JAVA programming language. However, an application may be composed of components developed in other programming languages such as, for example, C/C++ or other programming languages. A performance and security management solution that requires multiple different bytecode instrumentation techniques for application components programmed in different programming languages is less than ideal because of the added overhead to the developer and/or system administrator in developing and managing each of the different techniques.
APM solutions are distinct from, but often used in conjunction with, NPM solutions. Typically, NPM solutions operate by capturing and analyzing network communications between networked application components. Consequently, while NPM solutions can provide visibility at the network communication layer, they do not provide much, if any, visibility into applications themselves or the supporting system infrastructure.
Recent changes in the way applications are built and deployed present new challenges to which existing APM and NPM solutions are not well suited. Existing solutions were designed on the assumption that applications were relatively static, developed with a small number of well-known and understood tools, platforms, and languages, required relatively few upgrades, and operated in a dedicated enterprise computing environment. These assumptions break down for applications deployed in “hosted” computing environments.
In hosted computing environments, computing resources are centralized, for example, in a data center or other hosting facility. Hosted computing environments may be generally categorized into one of two categories: public and private. In private hosted computing environments, enterprise applications of differing criticality share the same computing infrastructure. In public hosting environments, applications of different organizations or companies share the same infrastructure.
In some hosted computing environments, applications can be rapidly developed and deployed without requiring services of network/system administrator to provision computing infrastructure. Such hosted computing environments have precipitated the introduction of a new type of user of application and network/system management solutions: the developer and operations person (or just “devop” for short). The devop often has the combined responsibilities of previously separate positions, including software development, quality assurance, and IT operations responsibilities.
With some hosted computing solutions, applications can be put into production and changed rapidly at a fast pace. Continued improvements in price and performance of commodity computing hardware along with the emergence of low cost reliable open source software platforms result in deploying many of these applications in scaled out, distributed hosted environments, often spanning multiple data centers, and private and public hosted computing environments. Often these applications execute on virtualized infrastructure in dynamic and shared environments—either in private hosted environments where multiple applications of the same enterprise share infrastructure or in public hosted environments where applications of multiple customers share infrastructure.
At the same time as the rise of hosted computing solutions for deploying applications, there has been a proliferation in tools, platforms, and programming languages for developing applications. Today, many applications are no longer developed with a small handful of technologies such as HTML and Java. Instead, in addition to these technologies, a number of a wide variety of newer, diverse technologies are being used for application development (e.g., Ruby on Rails, PHP, Ajax, JavaScript, Python, and many others). As a result, a management solution that focuses on a specific tool, platform, or programming language is inadequate for many of today's applications. While some hosted computing solutions provide the capability to automatically provision computing resources as needed to allow for dynamic scalability, for example, during traffic bursts, it is still largely the responsibility of the devop to ensure the performance of applications is adequate (e.g., meets a minimum quality of service level).
Overall, existing APM and NPM solutions are inadequate for the hosted computing environment because they provide only limited visibility into computing infrastructure in hosted computing environments that supports an application or operate only with specific tools, platform, or programming languages. Devops, application developers, system administrators, and others would appreciate a management solution providing an end-to-end view of their applications and a top-to-bottom view of their application stack including the supporting infrastructure in order to be able to assure service quality in hosted computing environments. There is a need to support a variety of tools, platforms, and programming languages and for a solution that is easy to deploy and use.